import UIKit

@available(iOS 3.2, *)
extension QKC where AA :UIGestureRecognizer {
		// the current state of the gesture recognizer
    open func state_qk_g() -> QKC<AA,YY,ZZ, UIGestureRecognizer.State >{
		 self +^ self.value.state
	}

		// the gesture recognizer's delegate
     open func delegate_qk_s(_ delegate:  UIGestureRecognizerDelegate? ) -> QKC<AA,YY,ZZ, UIGestureRecognizerDelegate? >{
		return link(next: delegate).then_QK { $0.value.delegate = delegate }
	}
     open func delegate_qk_g() -> QKC<AA,YY,ZZ, UIGestureRecognizerDelegate? >{
		 self +^ self.value.delegate
	}

		// default is YES. disabled gesture recognizers will not receive touches. when changed to NO the gesture recognizer will be cancelled if it's currently recognizing a gesture
    open func isEnabled_qk_s(_ isEnabled:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: isEnabled).then_QK { $0.value.isEnabled = isEnabled }
	}
    open func isEnabled_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isEnabled
	}

	// a UIGestureRecognizer receives touches hit-tested to its view and any of that view's subviews
		// the view the gesture is attached to. set by adding the recognizer to a UIView using the addGestureRecognizer: method
    open func view_qk_g() -> QKC<AA,YY,ZZ, UIView? >{
		 self +^ self.value.view
	}

		// default is YES. causes touchesCancelled:withEvent: or pressesCancelled:withEvent: to be sent to the view for all touches or presses recognized as part of this gesture immediately before the action method is called.
    open func cancelsTouchesInView_qk_s(_ cancelsTouchesInView:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: cancelsTouchesInView).then_QK { $0.value.cancelsTouchesInView = cancelsTouchesInView }
	}
    open func cancelsTouchesInView_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.cancelsTouchesInView
	}

		// default is NO.  causes all touch or press events to be delivered to the target view only after this gesture has failed recognition. set to YES to prevent views from processing any touches or presses that may be recognized as part of this gesture
    open func delaysTouchesBegan_qk_s(_ delaysTouchesBegan:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: delaysTouchesBegan).then_QK { $0.value.delaysTouchesBegan = delaysTouchesBegan }
	}
    open func delaysTouchesBegan_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.delaysTouchesBegan
	}

		// default is YES. causes touchesEnded or pressesEnded events to be delivered to the target view only after this gesture has failed recognition. this ensures that a touch or press that is part of the gesture can be cancelled if the gesture is recognized
    open func delaysTouchesEnded_qk_s(_ delaysTouchesEnded:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: delaysTouchesEnded).then_QK { $0.value.delaysTouchesEnded = delaysTouchesEnded }
	}
    open func delaysTouchesEnded_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.delaysTouchesEnded
	}

		// Array of UITouchTypes as NSNumbers.
    @available(iOS 9.0, *)
    open func allowedTouchTypes_qk_s(_ allowedTouchTypes:  [NSNumber] ) -> QKC<AA,YY,ZZ, [NSNumber] >{
		return link(next: allowedTouchTypes).then_QK { $0.value.allowedTouchTypes = allowedTouchTypes }
	}
    @available(iOS 9.0, *)
    open func allowedTouchTypes_qk_g() -> QKC<AA,YY,ZZ, [NSNumber] >{
		 self +^ self.value.allowedTouchTypes
	}

		// Array of UIPressTypes as NSNumbers.
    @available(iOS 9.0, *)
    open func allowedPressTypes_qk_s(_ allowedPressTypes:  [NSNumber] ) -> QKC<AA,YY,ZZ, [NSNumber] >{
		return link(next: allowedPressTypes).then_QK { $0.value.allowedPressTypes = allowedPressTypes }
	}
    @available(iOS 9.0, *)
    open func allowedPressTypes_qk_g() -> QKC<AA,YY,ZZ, [NSNumber] >{
		 self +^ self.value.allowedPressTypes
	}

	// If YES, once it receives a touch of a certain type, it will ignore new touches of other types, until it is reset to UIGestureRecognizerStatePossible.
		// defaults to YES
    @available(iOS 9.2, *)
    open func requiresExclusiveTouchType_qk_s(_ requiresExclusiveTouchType:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: requiresExclusiveTouchType).then_QK { $0.value.requiresExclusiveTouchType = requiresExclusiveTouchType }
	}
    @available(iOS 9.2, *)
    open func requiresExclusiveTouchType_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.requiresExclusiveTouchType
	}

		// number of touches involved for which locations can be queried
    open func numberOfTouches_qk_g() -> QKC<AA,YY,ZZ, Int >{
		 self +^ self.value.numberOfTouches
	}

		// name for debugging to appear in logging
    @available(iOS 11.0, *)
    open func name_qk_s(_ name:  String? ) -> QKC<AA,YY,ZZ, String? >{
		return link(next: name).then_QK { $0.value.name = name }
	}
    @available(iOS 11.0, *)
    open func name_qk_g() -> QKC<AA,YY,ZZ, String? >{
		 self +^ self.value.name
	}

	// These values are not considered as requirements for the gesture.
    @available(iOS 13.4, *)
    open func modifierFlags_qk_g() -> QKC<AA,YY,ZZ, UIKeyModifierFlags >{
		 self +^ self.value.modifierFlags
	}

    @available(iOS 13.4, *)
    open func buttonMask_qk_g() -> QKC<AA,YY,ZZ, UIEvent.ButtonMask >{
		 self +^ self.value.buttonMask
	}

		// add a target/action pair. you can call this multiple times to specify multiple target/actions
    open func addTarget_qk_f(_ target: Any, action: Selector) -> QKC<AA,YY,ZZ, Any>{
		 self +^ self.value.addTarget(target, action:action) +^ target
	}

		// remove the specified target/action pair. passing nil for target matches all targets, and the same for actions
    open func removeTarget_qk_f(_ target: Any?, action: Selector?) -> QKC<AA,YY,ZZ, Any?>{
		 self +^ self.value.removeTarget(target, action:action) +^ target
	}

	// example usage: a single tap may require a double tap to fail
    open func require_qk_f(toFail otherGestureRecognizer: UIGestureRecognizer) -> QKC<AA,YY,ZZ, UIGestureRecognizer>{
		 self +^ self.value.require(toFail:otherGestureRecognizer) +^ otherGestureRecognizer
	}

	// individual UIGestureRecognizer subclasses may provide subclass-specific location information. see individual subclasses for details
		// a generic single-point location for the gesture. usually the centroid of the touches involved
    open func location_qk_f(in view: UIView?) -> QKC<AA,YY,ZZ,CGPoint >{
		 self +^ self.value.location(in:view)
	}

		// the location of a particular touch
    open func location_qk_f(ofTouch touchIndex: Int, in view: UIView?) -> QKC<AA,YY,ZZ,CGPoint >{
		 self +^ self.value.location(ofTouch:touchIndex, in:view)
	}

}

